home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stut_src / disptext.c < prev    next >
Text File  |  1996-05-27  |  5KB  |  242 lines

  1. /*
  2.  * DispText.c
  3.  *
  4.  * Purpose:
  5.  * -------- 
  6.  * Affichage d'un texte
  7.  *
  8.  * History:
  9.  * --------
  10.  * 05.01.95: fplanque: Created
  11.  */
  12.  
  13.      #include "!OPTIONS.H"                /* Options de compilation */         
  14.     #define    THIS_FILE    "DISPTEXT.C v1.00 - 03.95"
  15.  
  16. /*
  17.  * System headers:
  18.  */
  19.     #include    <stdio.h>                    /* header standard */
  20.     #include <string.h>                    /* header tt de chaines */
  21.     #include    <stdlib.h>                    /* Pour malloc etc.. */
  22.    
  23.  
  24. /*
  25.  * Custom headers:
  26.  */
  27.     #include "ARB_OUT.H"
  28.     #include "DEF_ARBO.H"
  29.  
  30.     #include "SPEC_PU.H"
  31.  
  32.     #include "DBSYS_PU.H"
  33.     #include    "DEBUG_PU.H"    
  34.     #include    "SERV_PU.H"
  35.     #include    "LINE0_PU.H"
  36.     #include    "IOFLD_PU.H"
  37.     #include "LECTM_PU.H"        /* On y empreinte certaines routines */
  38.     #include "DISPT_PU.H"
  39.     #include "GENRC_PU.H"
  40.     #include "TERM_PU.H"
  41.     #include "TEXT_PU.H"
  42.     #include "SERCOMPU.H"
  43.  
  44.  
  45. /*
  46.  * --------------------------- METHODES -------------------------------
  47.  */
  48.  
  49.  
  50. /*
  51.  * DispText_ENPG(-)
  52.  *
  53.  * Purpose:
  54.  * --------
  55.  * Traitrement des initialisations ENTER PAGE
  56.  *
  57.  * History:
  58.  * --------
  59.  * 05.01.94: fplanque: Created
  60.  * 24.01.95: demande un DPAG
  61.  */
  62. void    DispText_ENPG(
  63.             VOIE    *    pVoie_curr )        /* In: Voie concern‚e */
  64. {
  65.     /*
  66.      * Cherche et sauve le champ qui affichera le texte
  67.      * et qui pourra ˆtre scroll‚:
  68.      */
  69.     pVoie_curr -> pOutputFPar_CurrOut = Find_OutField( pVoie_curr, FO_TEXT );
  70.  
  71.     /*
  72.      * Ouvre fichier texte:
  73.      */
  74.     register_action( pVoie_curr, OTXT, FT_TEXT, 0, NULL );
  75.  
  76.     /*
  77.      * Affiche donn‚es:
  78.      */
  79.     register_action( pVoie_curr, DDAT, 0, 0, NULL );
  80.     register_action( pVoie_curr, DPAG, 0, 0, NULL );
  81. }
  82.  
  83.  
  84.  
  85.  
  86. /*
  87.  * DispText_DispData(-)
  88.  *
  89.  * Purpose:
  90.  * --------
  91.  * Affiche les donn‚es initiales … l'‚cran:
  92.  *
  93.  * History:
  94.  * --------
  95.  * 06.01.95: fplanque: Created based on LectMsg_DispMsg()
  96.  * 08.01.95: affiche commentaire
  97.  * 24.01.95: appel de OutFields_DisplayGroup(); prepare texte … afficher
  98.  */
  99. void    DispText_DispData( 
  100.             VOIE *    pVoie_curr )    /* In: Voie concern‚e */
  101. {
  102.     /*
  103.      * -------------------------
  104.      * Affichage champs groupe 1 (commentaire...):
  105.      * -------------------------
  106.      */
  107.     OutFields_DisplayGroup( pVoie_curr, 1, 0, 0 );
  108.  
  109.     /*
  110.      * Pr‚paration du texte demand‚
  111.      * qui sera affich‚ dans le groupe 4
  112.      * et qui pourra ˆtre scroll‚ par la suite:
  113.      */
  114.     if( pVoie_curr -> pOutputFPar_CurrOut != NULL )
  115.     {    /*
  116.          * S'il y a un champ d'affichage du texte (scrollable):
  117.          */
  118.         DATABLOCK    * pDataBlk_Text = pVoie_curr -> pDataPage_OpenText -> data.dataBlock;
  119.  
  120.         pVoie_curr -> pIOField_CurrOut = IOField_PrepareText( pVoie_curr -> pOutputFPar_CurrOut, pDataBlk_Text -> p_block, pDataBlk_Text -> ul_length );
  121.     }
  122.  
  123. }
  124.  
  125.  
  126.  
  127. /*
  128.  * DispText_KeyAction(-)
  129.  *
  130.  * Purpose:
  131.  * --------
  132.  * R‚agit … la touche press‚e sur une page d'affichage de TEXTE
  133.  *
  134.  * Suggest: 
  135.  * --------
  136.  * Provisoire:
  137.  * Pas de v‚rification si le readlock du nouveau message est accept‚
  138.  *
  139.  * History:
  140.  * --------
  141.  * 06.01.95: fplanque: Created based on LectMsg_..
  142.  */
  143. void    DispText_KeyAction( 
  144.             KEYCODE    curr_keypress, /* In: Touche press‚e */
  145.             VOIE    *    pVoie_curr )    /* In: Voie concern‚e */
  146. {
  147.     switch( curr_keypress )
  148.     {
  149.         case    KEY_RETOUR:
  150.         case    KEY_SUITE:
  151.         {
  152.             IOFIELD            *    pIOField_CurrOut = pVoie_curr -> pIOField_CurrOut;
  153.             int                    nb_VisibleLines;
  154.         
  155.             /* 
  156.              * Teste s'il y a des messages: 
  157.              */
  158.             if( pIOField_CurrOut == NULL )
  159.             {
  160.                 aff_msg_l0( pVoie_curr, "Pas de texte!" );
  161.                 break;
  162.             }
  163.  
  164.             affiche_touche( pVoie_curr, curr_keypress );        /* Affiche nom de la touche */
  165.              
  166.              /*
  167.               * Nbre de lignes affich‚es:
  168.               */
  169.              nb_VisibleLines = pIOField_CurrOut -> FPar.Input -> h;
  170.               
  171.             if( curr_keypress == KEY_RETOUR )
  172.             {    /*
  173.                  * Tentative de recul: 
  174.                  */
  175.                 if( IOField_MoveTopLine( pIOField_CurrOut, -nb_VisibleLines ) < 0 )
  176.                 {    /*
  177.                      * On est pas sur la premiŠre page du message:
  178.                      */
  179.                     Generic_DisplayPageChange( pVoie_curr );
  180.                     break;
  181.                 }
  182.                 
  183.             }
  184.             else
  185.             {    /*
  186.                  * Tentative d'avancement: 
  187.                  */
  188.                 TEXTLINE    *    pTextLine_CurrTop = pIOField_CurrOut -> pTextLine_Top;
  189.                  
  190.                 if( IOField_MoveTopLine( pIOField_CurrOut, nb_VisibleLines ) == nb_VisibleLines )
  191.                 {    /*
  192.                      * On est pas sur la derniŠre page du message:
  193.                      */
  194.                     Generic_DisplayPageChange( pVoie_curr );
  195.                     break;
  196.                 }
  197.                 
  198.                 /*
  199.                  * On ne se d‚place pas dans le message:
  200.                  */
  201.                 pIOField_CurrOut -> pTextLine_Top = pTextLine_CurrTop;
  202.  
  203.             }
  204.         
  205.         }    
  206.             break;
  207.             
  208.         
  209.         case    KEY_ENVOI:                
  210.             if( ! serv_handleKeyword( pVoie_curr, '\0' ) )
  211.             {    /*
  212.                  * Si pas de mot clef:
  213.                  */
  214.                 affiche_touche( pVoie_curr, curr_keypress );        /* Affiche nom de la touche */
  215.  
  216.                 /*
  217.                  * Demande Changement de page:
  218.                  */
  219.                 follow_KeyArboLink( pVoie_curr, curr_keypress );
  220.             }
  221.             break;
  222.  
  223.  
  224.         case    KEY_ANNUL:
  225.         case    KEY_REPET:
  226.         case    KEY_GUIDE:
  227.         case    KEY_SOMM:
  228.         case    KEY_CORREC:
  229.             affiche_touche( pVoie_curr, curr_keypress );        /* Affiche nom de la touche */
  230.             /*
  231.              * Demande Changement de page:
  232.              */
  233.             follow_KeyArboLink( pVoie_curr, curr_keypress );
  234.             break;
  235.  
  236.         default:
  237.             signale("Code touche inconnu");
  238.     }
  239.  
  240. }
  241.  
  242.